#pragma once

// Connect to the local VDI service
HRESULT vdsLoad( IVdsService **ppService );

// List the disks
HRESULT vdsList( IVdsService *pService, CAtlArray<CComPtr<IVdsDisk>> &dest );

enum eDiskState
{
	Online,
	Offline,
	Failed
};

// Structure to hold interesting information about the disk
struct sDiskInfo
{
	CString displayName;
	QWORD size;
	DWORD type;
	eDiskState state;

	CString getSizeString() const;
	CString getTypeString() const;
	CString getStateString() const;
};

// Query information about the disk
HRESULT vdsDiskInfo( IVdsDisk *pDisk, sDiskInfo* pStatus );

// Bring disk online
HRESULT vdsOnline( IVdsDisk *pDisk );

// Take disk offline
HRESULT vdsOffline( IVdsDisk *pDisk );